#ifndef SERVERCONTROL_H
#define SERVERCONTROL_H

#include <QObject>
/**
 * @brief 服务器控制类，提供服务器顶层控制接口
 * @author Albert
 * @date 2022-04-29
 * @version V1.0
 */
class ServerControl : public QObject
{
    Q_OBJECT
protected:
    explicit ServerControl(QObject *parent = nullptr);

public:
    /**
     * @brief 获取单例对象
     * @return 单例对象
     */
    static ServerControl *getObject();
    /**
     * @brief 服务器初始化，包括各个模块的初始化
     */
    void serverInit();
    /**
     * @brief 服务器启动
     * @return 启动的结果
     *          如果失败可调用serverGetLastErrorInfo()函数获取失败原因
     */
    bool serverStart();
    /**
     * @brief 获取最后一次失败的原因
     * @return 失败的原因
     */
    QString serverGetLastErrorInfo();

protected:
    static ServerControl *obj;
    QString errorInfo;

};

#endif // SERVERCONTROL_H
